package com.kaifamiao.io.d0921;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

/**
 * read() 读取一个字节, 返回读取到的内容。 没有返回 -1
 * read(byte[]) 读取 byte数组长度个字节，放入数组中。返回读取到的字节数，如果没有则返回 -1
 * new String(byte[], offset, length) 将 byte 数组中从 offset 索引开始的 length 个字节以默认编码转换成字符串
 * new String(byte[], offset, length, charset) 将 byte 数组中从 offset 索引开始的 length 个字节以指定编码转换成字符串
 */
public class FileInputStreamDemo2 {

    public static void main(String[] args) {
        // 创建对象
        String path = "D:\\io\\file-input.txt";
        try (FileInputStream fileInputStream = new FileInputStream(path);) {

            long size = fileInputStream.available();
            System.out.println("还有 " + size + " 个字节未读取");

//            long skip = fileInputStream.skip(100);
//            System.out.printf("跳过了 %s ", skip);
//            size = fileInputStream.available();
//            System.out.println("还有 " + size + " 个字节未读取");

//            fileInputStream.skip(9);

            byte[] bytes = new byte[1024];
            int len = -1;
            while( (len = fileInputStream.read(bytes)) != -1){
                String str = new String(bytes, 0, len, Charset.forName("gbk"));
                System.out.print(str);
//                System.out.printf("读取了 %s 个字节， 内容是： %s", length, str);
//                System.out.println();
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
